Sistema de Nombrado en Java (JNDI) [Parte I]

Convertir un nombre significa usar su representaci�n string (java.lang.String) para obtener su representaci�n estructural (Name).

El JNDI proporciona un analizador de nombres para nombres mixtos y un interface gen�rico para analizar nombres compuestos. Los proveedores de servicios proporcionan las implementaciones reales de los analizadores de nombres para nombres compuestos exportados por sus espacios de nombres.

.�Convertir Nombres Mixtos

Para convertir un nombre mixto, podemos usar su representaci�n string en el constructor de CompositeName.

Por ejemplo, el siguiente c�digo convierte el nombre string en un nombre estructurado, CompositeName

// Parse the string name into a CompositeName
Name cname = new CompositeName(
    "cn=homedir,cn=Jon Ruiz,ou=people/tutorial/report.txt");

Puedes ver la secci�n Nombres Mixtos para ver ejemplos de c�mo acceder y cambiar los componentes de un CompositeName.

.�Convertir Nombres Compuestos

Para convertir un nombre compuesto, usamos el interface NameParser.

Este interface contiene un s�lo m�todo: Name parse(String name) throws InvalidNameException;

Sin embargo, primero debemos obtener un NameParser desde el proveedor de servicios que soporta el espacio de nombres. Aqu� tenemos un ejemplo que obtiene analizadores de nombres para espacios de nombres LDAP y espacios de nombres de ficheros.

// Create the initial context
Context ctx = new InitialContext();

// Get the parser for LDAP
NameParser ldapParser = 
    ctx.getNameParser("ldap://localhost:389/o=jnditutorial");

// Get the parser for filenames
NameParser fsParser = ctx.getNameParser("file:/");

Puedes ver la secci�n Nombres Compuestos para m�s ejemplos de c�mo obtener un ejemplar de� NameParser.

Una vez que tenemos un ejemplar de un NameParser, podemos usar su m�todo parse() para convertir nombres compuestos. Como una continuaci�n del ejemplo, podemos usar ldapParser para convertir un nombre string LDAP en su forma estructural, de esta forma

// Parse the name using the LDAP parser
Name compoundName = ldapParser.parse("cn=John Smith, ou=People, o=JNDITutorial");

De forma similar, podemos usar fsParser para convertir un nombre de fichero de esta forma.

// Parse the name using the LDAP parser
Name compoundName = fsParser.parse("tmp/tutorial/beyond/names/parse.html");

Observa que cada analizador determina la s�ntaxis de nombres que aceptar�.

Si suministramos un nombre de fichero v�lido que no es un nombre LDAP legal a un analizador LDAP, obtendremos una InvalidNameException.

Aunque parse() devuelve un Name, NameParser est� pensada para ser utilizada s�lo con nombres compuestos, no con nombres mixtos. El objeto devuelto por parse() podr�a o no ser un ejemplar de CompoundName.

El �nico requerimiento es que implemente el interface Name. El tipo exacto del objeto devuelto depende de la implementaci�n del proveedor de servicios.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO